package org.aceor.funny.common.monitor;

import com.google.common.base.Strings;

/**
 * 耗时监控点
 */
public enum MonitorPoint {

    /**
     * 从连接池中获取连接
     */
    GET_CONNECTION,

    /**
     * 一个connection context的生命周期
     */
    CONNECTION_CONTEXT,

    /**
     * 执行sql
     */
    EXECUTE_SQL,

    /**
     * 解析sql
     */
    PARSE_SQL,

    /**
     * 普通执行监控
     */
    COMMON_EXECUTE,

    /**
     * 未知类型
     */
    UNKNOW;


    public static MonitorPoint parse(String name) {
        if (!Strings.isNullOrEmpty(name)) {
            for (MonitorPoint tmp : values()) {
                if (name.toUpperCase().equals(tmp.name()))
                    return tmp;
            }
        }
        throw new RuntimeException("No such MonitorPoint type : " + name);
    }

}
